package com.syher.seconds.kill.service;

import com.syher.seconds.kill.pojo.StockOrder;

public interface IOrderService extends IBaseService<StockOrder> {

    /**
     * 创建订单
     * @param sid
     *  库存ID
     * @return
     *  订单ID
     */
    int createWrongOrder(int sid) throws Exception;
    /**
     * 创建订单 乐观锁
     * @param sid
     * @return
     * @throws Exception
     */
    int createOptimisticOrder(int sid) throws Exception;

    /**
     * 创建订单 乐观锁，库存查 Redis 减小 DB 压力。
     * @param sid
     * @return
     * @throws Exception
     */
    int createOptimisticOrderUseRedis(int sid) throws Exception ;

    /**
     * 发送kafka订单  异步处理请求与写订单操作，提高响应速度
     * @param sid
     * @throws Exception
     */
    void createOptimisticOrderUseKafka(int sid) throws Exception ;

    /**
     * 创建订单 kafka消费者对订单入库落地。
     * 利用 Kafka 异步写订单
     * @param sid
     * @return
     * @throws Exception
     */
    void createOptimisticOrderUseRedisAndKafka(int sid) throws Exception ;
}
